/**
 * 用户角色关联实体类 - 多对多关系的用户和角色关联实体
 *
 * 开发人员：陈宏伟
 * 开发时间：2025-10-20 至 2025-10-25
 * 模块职责：定义用户和角色的多对多关联关系，支持RBAC权限模型的用户角色管理
 *
 * 技术要点：
 * - 复合主键设计，使用嵌入式ID
 * - 多租户关联设计，与用户和角色实体关联
 * - 懒加载策略优化性能
 * - 关联关系映射和级联操作
 *
 * 开发故事：负责用户角色关联实体的数据模型设计，与权限服务深度配合，实现用户和角色的灵活关联和管理。
 */
package com.pbl.entity;

import lombok.*;

import javax.persistence.*;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table(name = "user_roles")
public class UserRole {
    @EmbeddedId
    private UserRoleId id;

    @ManyToOne(fetch = FetchType.LAZY)
    @MapsId("userId")
    @JoinColumn(name = "user_id")
    private User user;

    @ManyToOne(fetch = FetchType.LAZY)
    @MapsId("roleId")
    @JoinColumn(name = "role_id")
    private Role role;
}
